Computerized motion control and motion capture are often used in industrial and entertainment applications where time-critical computer programming techniques are used and deterministic hard real time operating systems are utilized. Pre-recorded motion can be played back to electro-mechanical actuators in a highly accurate periodic stream so as to move robotic devices, or alternatively motion can be sent into computers which move computer graphic models on a screen. Live streaming motion from sensors or input devices can also be sent into such systems so that objects are actuated in-the-moment as a live performance.
Electronic transducers are used as input devices to such motion systems; they measure and convert real-world movement such as position or velocity to a digitized form readable by computer software. A motion system may take in a stream of such data over time from another computer where the motion has been synthesized by a person using software tools, or the motion may have originated at electronic transducers measuring real world motion.
Typically both capture and playback of recorded motion datasets is required of motion systems. The “Non-linear editor” is common in computer programs which represent multiple tracks of data over time, such a facility can record, edit, and play back motion datasets.
Frame rates of 24 to 200 frames per second are typical in live motion systems and that frame-rate must not jitter by more than a few tens of microseconds or the job fails in some way. In a deterministic hard real time environment, periodic invocation or “frame-rate”, can be guaranteed by design. In electromechanical actuation, excessive timing jitter causes high frequency accelerations and vibrations which adversely affect the quality of motion, causing undesired movement or even damage to equipment. If such jitter is allowed in a live-action or film-making environment, the quality of motion would appear visually noncontinuous, rendering any recording unusable in a live-action performance environment such jitter would cause a poor aesthetic quality of motion.
The difference between “hard” and “soft” real time is not Speed but Determinism. In this case Determinism means a set of timing and scheduling guarantees provided by operating system architecture. A “Task” in a real time computer system may be either a Program or a Thread of a program which can be independently scheduled to run by the operating system. A computer Operating System which is “Hard Real Time” is one where the operating system architecture provides a Task Scheduler that achieves the following:                Guaranteed execution of critical Tasks at a known time, or at a known periodic rate        An upper bound on the latency in Task scheduling and event handling        Guaranteed Task prioritization        A guarantee that preemption of a running critical task will not occurSuch operating systems are called Deterministic because the timing of tasks can be precisely determined and controlled. Desktop operating systems such as Windows®, MacOS®, or Linux® implement task scheduling architecture which has the differing goal of making execution time available to processes equally. Thus, these environments cannot meet all of the above real time requirements. Such operating systems can attempt to schedule tasks to execute at known times in the average case, but their worst-case timing errors are not bounded. Such environments are non-deterministic and only capable of what is called “Soft Real Time”.        
To solve timing problems in live streaming motion systems, the traditional approach has been to use Hard Real Time operating systems and their task scheduling techniques. One limitation of Hard Real Time systems though is that they typically cannot utilize high capacity persistent storage such as hard disk drives because of device access timing delays which would ruin real time performance. Such systems thus keep all active data in Random Access Memory (“RAM”). This approach has the drawback of limiting the amount of data recording or playback time available, as there is normally only a small amount of RAM in a computer relative to the potential size of multi-track streaming motion datasets.
Soft Real Time systems, on the other hand, use hard-disk recording and playback techniques to access large datasets but cannot guarantee low latency triggering of events or accurate periodic timing because their tasks may be interrupted or delayed by the operating system. Such systems experience occasional data underflow, where data is not available, and cannot reliably stay in sync or lock their timing to an external time-base. These shortcomings give such systems serious limitations in live motion environments like stage productions, sporting events, or motion picture and TV production.
To solve the problem of running out of memory, many desktop Operating Systems implement “Virtual Memory” systems which use a “paging” approach to supply more memory than physically exists. The purpose of this virtual memory is to prevent the Operating System and its applications from halting when RAM runs out. This is done by augmenting physical memory with memory emulation on a persistent storage medium like a hard drive. Though such virtual memory systems implement on-demand memory for applications which request it, applications must “block” and wait while data is moved from RAM to persistent storage and vice-versa. The operating system may also be busy performing other tasks when virtual memory is needed. Thus traditional virtual memory systems yield significant slowdowns in application performance, the problem being exacerbated by the fact that the Operating System does not know what data will be used ahead of time. In summary, Operating System virtual memory paging makes computer programs susceptible to stalling whether memory is accessed linearly or in a random-access fashion.
Application programs themselves do have more knowledge of how they will use their own data and some, notably multimedia applications, implement their own “paging” systems to handle large linear datasets. This helps prevent the stalling which would occur if the operating system alone were relied upon. Such multimedia applications are sufficient for some soft real time jobs but still have three significant drawbacks:                They are susceptible to stalling during random-access of their datasets        They are susceptible to timing jitter during playback or recording of a linear dataset        They cannot start a capture or playback without Buffering which causes triggering latency        
Thus, there is a need for a system that avoids these drawbacks, especially for large linear datasets.